热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

这个相对简单的存储过程如何搞定?

表结构:Companies(单位表)------------------idcompanyNameDepartCategories(单位分类)-----------
表结构:
Companies(单位表)
------------------
id
companyName


DepartCategories(单位分类)
---------------------------
id
categoryName
companyID (外键--单位表)


DepartMents(部门表)
--------------------
id
departMentName
departCategoryID(外键--单位分类)


car (汽车表)
------------
id
carName
carNumber 
departMentID(外键--部门表)


maintenaces(汽车维修记录)
---------------------------
id         主键
carid      外键
repairdate 报修日期
price      金额



目前:select id,carid,repairdate,price from maintenaces
返回结果:

id          carid       repairdate              price
----------- ----------- ----------------------- ---------------------------------------
1           1           2008-07-20 00:00:00.000 250.00
2           2           2008-05-09 00:00:00.000 10.00
3           4           2007-10-09 00:00:00.000 20.00
4           2           2008-10-09 00:00:00.000 20.00
7           1           2008-06-21 00:00:00.000 0.00
9           1           2008-08-02 00:00:00.000 0.00
10          1           2008-06-21 00:00:00.000 800.00
11          2           2008-05-22 00:00:00.000 0.00
12          1           2008-07-23 00:00:00.000 0.00


我想统计单车(查询一个车)全部车的年,半年,季,月的维修记录费用汇总报表,结构如下:

序号  汽车名称  汽车牌号 使用部门  总计金额

1.如何用一个存储过程实现上述功能?


2。我用上面的maintenaces表测试如下

declare @year char(4)
set @year='2008'
declare @Month char(1)
set @MOnth='6'

select c.carName 汽车名称,c.carnumber 汽车牌号,d.departmentName 使用部门,sum(m.price) as 金额总计
from 
  Maintenaces m inner join cars c on  m.carid = c.id
inner join departMents d on c.departMentID  =  d.id
inner join DepartCategories dc on d.departCategoryID = dc.id
inner join Companies cp on dc.companyID = cp.id
where YEAR(m.repairDate) = @year and
      Month(m.repairDate) = @Month
group by c.carname,c.carnumber,d.departmentName


显示

汽车名称      汽车牌号    使用部门   金额总计
-------------------------------------------- 
大轿车        晋C10695     汽车队     800.00


可将上面的参数@Month设置为10,查询为空

汽车名称      汽车牌号    使用部门   金额总计
-------------------------------------------- 

7 个解决方案

#1


这么多表,说说如何关联,我看不简单吧.

#2


先试试不用联接这么多表

declare @year char(4) 
set @year='2008' 
declare @Month char(1) 
set @MOnth='6' 

select c.carName 汽车名称,c.carnumber 汽车牌号,d.departmentName 使用部门,sum(m.price) as 金额总计 
from 
  Maintenaces m inner join cars c on  m.carid = c.id 
inner join departMents d on c.departMentID  =  d.id 
where YEAR(m.repairDate) = @year and 
      Month(m.repairDate) = @Month 
group by c.carname,c.carnumber,d.departmentName 

#3


老大们,速度真快呀,呵呵

Companies(单位表)  
DepartCategories(单位分类) 
DepartMents(部门表) 
car (汽车表) 
maintenaces(汽车维修记录) 

很简单,层层是级联的关系,原先不想要这么多,可需要上述的分类查询,只能这样了

to Haiwer 海阔天空,我试了试上面的还是查询2008年10月的记录时为空

另外

我想统计单车(查询一个车)全部车的年,半年,季,月的维修记录费用汇总报表,结构如下:

序号  汽车名称  汽车牌号 使用部门  总计金额

1.如何用一个存储过程实现上述功能?

#4


declare @Month char(1)改成  char(2) 就好了

另外

我想统计单车(查询一个车)全部车的年,半年,季,月的维修记录费用汇总报表,结构如下:

序号  汽车名称  汽车牌号 使用部门  总计金额

1.如何用一个存储过程实现上述功能?
 

#5


引用 4 楼 icod 的回复:
declare @Month char(1)改成  char(2) 就好了 

另外 

我想统计单车(查询一个车)全部车的年,半年,季,月的维修记录费用汇总报表,结构如下: 

序号  汽车名称  汽车牌号 使用部门  总计金额 

1.如何用一个存储过程实现上述功能? 


...没注意变量长度

#6


是呀,要是 年,半年,季,月的维修记录费用汇总,在一个存储过程中,这些参数根据条件动态变化,如何实现,
如按季或月或半年,前提年参数一定要有

#7


UP,研究一下

推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
author-avatar
321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有